#include <stdio.h>
#include <iostream>

using namespace std;
// int main()
// {
//     FILE* fd = fopen("log.txt", "r");
//     if(fd == nullptr)
//     {
//         perror("fopen fail!");
//         return 1;
//     }

//     // int count = 5;
//     // while(count--)
//     // {
//     //     fputs("hello world!\n", fd);
//     // }

//     char buffer[64];
//     for(int i = 0; i < 5; i++)
//     {
//         fgets(buffer, sizeof(buffer), fd);
//         // cout << buffer << endl;
//         printf("%s\n", buffer);
//     }
//     fclose(fd);
//     return 0;
// }
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include<string.h>

// int main()
// {
//     int fd = open("log.txt", O_RDONLY | O_CREAT, 0666);
//     // int fd2 = open("log2.txt", O_RDONLY | O_CREAT, 0666);
//     // int fd3 = open("log3.txt", O_RDONLY | O_CREAT, 0666);
//     // printf("fd1:%d\n", fd1);
// 	// printf("fd2:%d\n", fd2);
// 	// printf("fd3:%d\n", fd3);
//     if(fd < 0)
//     {
//         perror("open fail!");
//         return 1;
//     }

//     // const char* mess = "hello syscall!\n";
//     // for(int i = 0; i < 5; i++)
//     // {
//     //     write(fd, mess, strlen(mess));
//     // }

//     char ch;
//     while(1)
//     {
//         ssize_t s = read(fd, &ch, 1);
//         if(s <= 0)
//         {
//             break;
//         }
//         write(1, &ch, 1);
//     }
//     close(fd);
//     return 0;
// }

// int main()
// {
//     // close(1);
//     // int fd = open("log.txt", O_WRONLY | O_CREAT | O_APPEND, 0666);
//     // if(fd < 0)
//     // {
//     //     perror("open fail!");
//     //     return 1;
//     // }

//     // printf("hello Linux\n");
// 	// printf("hello Linux\n");
// 	// printf("hello Linux\n");
// 	// printf("hello Linux\n");
// 	// printf("hello Linux\n");
// 	// fflush(stdout);

//     // close(fd);

//     // close(0);
//     // int fd = open("log.txt", O_RDONLY | O_CREAT, 0666);
//     // if(fd < 0)
//     // {
//     //     perror("open fail!");
//     //     return 1;
//     // }
    
//     // char ch[64];
//     // while(scanf("%s", ch) != EOF)
//     // {
//     //     printf("%s\n", ch);
//     // }
//     // close(fd);

//     printf("hello printf\n"); //stdout
// 	perror("perror"); //stderr

// 	fprintf(stdout, "stdout:hello fprintf\n"); //stdout
// 	fprintf(stderr, "stderr:hello fprintf\n"); //stderr
//     return 0;
// }


// int main()
// {
//     int fd = open("log.txt", O_WRONLY | O_CREAT, 0666);
//     if(fd < 0)
//     {
//         perror("open fail!");
//         return 1;
//     }

//     close(1);
//     dup2(fd, 1);
//     printf("hello printf\n");
// 	fprintf(stdout, "hello fprintf\n");
//     return 0;
// }


int main()
{
	//c
	printf("hello printf\n");
	fputs("hello fputs\n", stdout);
	//system
	write(1, "hello write\n", 12);
	fork();
	return 0;
}